home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Resources
/
Chat & Communication
/
Digsby build 37
/
digsby_setup.exe
/
lib
/
M2Crypto
/
AuthCookie.pyo
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2008-10-13
|
4KB
|
121 lines
# Source Generated with Decompyle++
# File: in.pyo (Python 2.5)
import Rand
import m2
import Cookie
import binascii
import re
import time
_MIX_FORMAT = 'exp=%s&data=%s&digest='
_MIX_RE = re.compile('exp=(\\d+\\.\\d+)&data=(.+)&digest=(\\S*)')
def mix(expiry, data, format = _MIX_FORMAT):
return format % (repr(expiry), data)
def unmix(dough, regex = _MIX_RE):
mo = regex.match(dough)
if mo:
return (float(mo.group(1)), mo.group(2))
else:
return None
def unmix3(dough, regex = _MIX_RE):
mo = regex.match(dough)
if mo:
return (float(mo.group(1)), mo.group(2), mo.group(3))
else:
return None
_TOKEN = '_M2AUTH_'
class AuthCookieJar:
_keylen = 20
def __init__(self):
self._key = Rand.rand_bytes(self._keylen)
def _hmac(self, key, data):
return binascii.b2a_base64(m2.hmac(key, data, m2.sha1()))[:-1]
def makeCookie(self, expiry, data):
dough = mix(expiry, data)
return AuthCookie(expiry, data, dough, self._hmac(self._key, dough))
def isGoodCookie(self, cookie):
if cookie.isExpired():
return 0
c = self.makeCookie(cookie._expiry, cookie._data)
if c._expiry == cookie._expiry and c._data == cookie._data and c._mac == cookie._mac:
pass
return c.output() == cookie.output()
def isGoodCookieString(self, cookie_str):
c = Cookie.SmartCookie()
c.load(cookie_str)
if not c.has_key(_TOKEN):
return 0
undough = unmix3(c[_TOKEN].value)
if undough is None:
return 0
(exp, data, mac) = undough
c2 = self.makeCookie(exp, data)
if not c2.isExpired():
pass
return c2._mac == mac
class AuthCookie:
def __init__(self, expiry, data, dough, mac):
self._expiry = expiry
self._data = data
self._mac = mac
self._cookie = Cookie.SmartCookie()
self._cookie[_TOKEN] = '%s%s' % (dough, mac)
self._name = '%s%s' % (dough, mac)
def expiry(self):
return self._expiry
def data(self):
return self._data
def mac(self):
return self._mac
def output(self):
return self._cookie.output()
def value(self):
return self._cookie[_TOKEN].value
def isExpired(self):
return time.time() > self._expiry
def name(self):
return self._name
def headerValue(self):
return self.value()